#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QList>
#include "datamodel.h"
#include "testcasemanager.h"
#include "testexecution.h"
#include "testcaseeditor.h"

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow {
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_actionTestCaseEditor_triggered();
    void on_testSelectedBtn_clicked();
    void on_selectAllBtn_clicked();
    void onTestCaseTested(const QString& result);
    void on_backFromEditor();

    void on_editTestCaseBtn_clicked();

    void on_exportCsvBtn_clicked();

    // 新增：处理测试进度更新
    void onTestProgress(int caseIndex, const QString& status);
    // 保留：处理测试完成最终结果
    void onTestCaseFinished(int caseIndex, const QString& result);
    // 可选：处理中间步骤完成（如需）
    void onTestCompleted(int caseIndex, const QString& result);

    void on_swithTypeBtn_clicked();

private:
    Ui::MainWindow *ui;
    TestCaseManager* m_testCaseManager;
    TestExecution* m_testExecution;
    TestCaseEditor* m_testCaseEditor;
    QWidget *m_originalCentralWidget;  // 新增：保存原始中央部件
    int m_currentTestCaseIndex;
    int m_currentCommType;//1-UDP;2-TRDP

    void refreshTestCaseList();
    QList<int> getSelectedTestCases();
};

#endif // MAINWINDOW_H
